test: test용 코드 추가 (7) #179
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
주 목표 문제 수: 3개
백준 #13163. 닉네임에 갓 붙이기: 문자열 / 브론즈3
🚩플로우 (선택)
god합치기🚩제출한 코드
백준 #1755. 숫자놀이 : 문자열 / 실버4
🚩플로우 (선택)
english를 준비한다.이 리스트는 숫자 0부터 9까지의 영단어를 저장한 리스트이다. 인덱스로 구분하여 저장한다. 예를 들어 0번째 인덱스에는
zero, 1번째 인덱스에는one, … 9번째 인덱스에는nine으로english리스트에 저장한다.answer를 빈 딕셔너리로 초기화한다.m과 끝 범위n을 입력받는다.m에서n까지의 숫자 리스트를nums에 저장한다.nums리스트를 순회하며 해당 하는 값에 몫과 나머지를 각각english리스트를 사용하 영단어로 변환하여temp에 저장한다.temp문자열을answer딕셔너리에num을 키로 하여 저장한다.answer딕셔너리의items()를value를 기준으로 정렬하여 출력한다.cnt변수를 사용해 출력된 숫자의 개수를 세고, 10개를 출력할 때마다 줄바꿈을 한다.🚩제출한 코드
💡TIL
나는 이 문제에 대해 쓸데없이 좀 장황하게 풀긴 했다..
자꾸 자꾸 lambda를 이용하여 정렬하는 부분을 까먹는다. 꼭 기억하자 메모.
백준 #16173. 점프왕 쩰리 (Small) : DFSBFS / 실버4
🚩플로우 (선택)
n을 입력받고 게임판의 구역(맵)을jump_game리스트에 저장한다.queue에 출발점을 추가한 후, 오른쪽과 아래 방향으로 현재 위치의 칸 수 만큼 이동한다.queue에 추가한다.True를 반환한다.queue가 더이상 없는 경우에는,False를 반환한다.True이면 “HaruHaru”를,False이면 “Hing”을 출력한다.🚩제출한 코드
💡TIL
dx,dy경로 정의에 시간을 많이 소비했다. 방향을 결정하는 조건을 문제에 맞게 설정을 해야 한다는 것을 알게 되었다.dx,dy를 정의했는데, 오른쪽과 아래로만 이동할 수 있으므로1이 아닌 현재 위치의 값만큼 이동해야 한다는 점을 깨달았다.+를 사용해야 함에도 불구하고, 잘못해서 ``로 작성하는 실수를 했다. 좌표 이동 방향을 정확히 파악하는 것이 중요하다.dx,dy설정을 외우기보다는 문제에 맞게 응용하는 것이 중요함을 배웠다.변수==False라고 쓰는 것보다는not 변수이렇게 쓰는 게 더 파이써닉하고 깔끔한 것 같다.== False대신not을 사용하는 것이 더 파이써닉하고 깔끔하다.백준 #1072. 게임: 이분탐색 / 실버3
🚩플로우 (선택)
x)와 이긴 게임 수(y) 입력 받아 현재 승률z를 계산한다.z가 99이상이면 더이상 승률이 변하지 않으므로, -1을 출력하고 프로그램을 종료한다.left는 1,right는x로 설정하고,left가right보다 작거나 같은 동안 이분 탐색을 진행한다.left는 1,right는x로 설정한다.left와right를 기준으로left값이right값보다 작거나 같을 경우에 대해 이분 탐색을 진행한다.mid를 다시 계산한 후, 추가 게임을 했을 때의 새로운 승률을 계산한다.left를 증가시킨다.mid값을 정답(answer)로 설정하고,right를 줄여 더 적은 게임으로 승률이 변할 수 있는지 확인한다.answer를 출력한다.🚩제출한 코드
💡TIL
이 문제를 처음에 봤을 때는
수학적으로 접근해야 하는 줄 알았다. 근데 아무리봐도 어떤 규칙으로 접근해야 할 지 감이 오지 않았다. 99클럽에서 제공하는 힌트를 보았더니 **이분탐색**이라고 나와있었다. 이 문제가 왜 이분탐색인지 한참을 고민했던 것 같다. 이 문제를 계기로 이분탐색에 대해 복습할 수 있었다.이분탐색**할 때는left와right의 범위를 올바르게 설정해주어야 한다. 그리고left를 언제 이동시켜야 하는지right를 언제 시켜야 하는지 그 조건(=**탐색 범위를 줄여가는 조건)**도 함께 생각해주어야 한다.Z에 대해 구하기 위해서
z = y // x * 100로 풀었는데 틀렸다고 나왔다. 예제를 돌렸을 때는 이상이 없었는데 왜 안 되는지 이유를 몰랐다. 결국 다른 분의 풀이를 보고z = (y * 100) // x로 고쳤더니 해결되었다. 이유는 연산 순서에 있었다.z = y // x * 100y // x=8 // 10=0(정수 나눗셈이기 때문에 소수점 이하를 버림)0 * 100=0z = (y * 100) // xy * 100=8 * 100=800800 // 10=80(정수 나눗셈이므로 소수점 이하 버림)기존 방식은 먼저 소수점을 버려버리기 때문에 잘못된 계산이 나올 수밖에 없었던 것이다. 실수자료형은 무한 소수가 나올 수 있는데, 컴퓨터 연산의 메모리는 이를 정확히 커버할 수가 없어 예상과는 다른 결과가 나올 수 있다. 이 부분에 대해 새로 알게 되었다.
참고자료:
백준 #2252. 줄 세우기: 위상정렬,그래프 / 골드3
🚩플로우 (선택)
n, 키 비교 횟수m을 입력받는다.graph와 모든 학생의 진입차수를 0으로 초기화한indegree리스트를 생성한다.graph: 각 학생의 키 비교 관계를 저장 (a번 학생이 b번 학생보다 앞에 서야 하면, a -> b 형태로 연결).indegree: 각 학생이 앞에 있어야 하는 학생들의 수를 저장 (즉, 진입 차수).m번 반복하여a,b학생의 키 비교 정보를 입력받는다.a는b보다 앞에 서야 하므로graph[a]에b를 추가하고,indegree[b]를 1 증가시킨다.topology_sort)result를 선언한다.q를deque사용해 초기화한다.indegree[i]가 0인 학생들을 큐에 넣는다.now에 저장하고 이를 결과 리스트에 추가한다.now학생과 연결된 모든 학생들의 진입 차수를 1씩 감소시킨다.result리스트에 저장된 학생들을 출력한다.🚩제출한 코드
💡TIL